// 后端接口基础路径（请根据实际部署地址修改）

const BASE_URL = "http://localhost:8080";
// Axios配置
axios.defaults.baseURL = BASE_URL;
axios.defaults.headers.post['Content-Type'] = 'application/json';

// 公共方法封装
const Common = {
    // 日期格式化（时间戳→yyyy-MM-dd HH:mm:ss）
    formatDate: function (timestamp) {
        if (!timestamp) return "";
        return moment(timestamp).format("YYYY-MM-DD HH:mm:ss");
    },

    // 订单状态转换（0：待支付 1：已支付 2：已取消 3：已完成 4：已退款）
    formatOrderStatus: function (status) {
        const statusMap = {
            0: '<span class="badge badge-warning badge-status">待支付</span>',
            1: '<span class="badge badge-success badge-status">已支付</span>',
            2: '<span class="badge badge-secondary badge-status">已取消</span>',
            3: '<span class="badge badge-primary badge-status">已完成</span>',
            4: '<span class="badge badge-danger badge-status">已退款</span>'
        };
        return statusMap[status] || '<span class="badge badge-dark">未知</span>';
    },

    // 优惠券状态转换（0：未使用 1：锁定 2：已使用 3：已过期 4：已撤回）
    formatCouponStatus: function (status) {
        const statusMap = {
            0: '<span class="badge badge-primary badge-status">未使用</span>',
            1: '<span class="badge badge-warning badge-status">锁定</span>',
            2: '<span class="badge badge-success badge-status">已使用</span>',
            3: '<span class="badge badge-secondary badge-status">已过期</span>',
            4: '<span class="badge badge-danger badge-status">已撤回</span>'
        };
        return statusMap[status] || '<span class="badge badge-dark">未知</span>';
    },

    // 优惠券发放任务状态转换（0：待执行 1：执行中 2：执行失败 3：执行成功 4：取消）
    formatTaskStatus: function (status) {
        const statusMap = {
            0: '<span class="badge badge-primary badge-status">待执行</span>',
            1: '<span class="badge badge-warning badge-status">执行中</span>',
            2: '<span class="badge badge-danger badge-status">执行失败</span>',
            3: '<span class="badge badge-success badge-status">执行成功</span>',
            4: '<span class="badge badge-secondary badge-status">已取消</span>'
        };
        return statusMap[status] || '<span class="badge badge-dark">未知</span>';
    },

    // 优惠券模板状态转换（0：生效中 1：已结束）
    formatTemplateStatus: function (status) {
        const statusMap = {
            0: '<span class="badge badge-success badge-status">生效中</span>',
            1: '<span class="badge badge-secondary badge-status">已结束</span>'
        };
        return statusMap[status] || '<span class="badge badge-dark">未知</span>';
    },

    // 提示框（成功）
    successMsg: function (msg) {
        alert(msg || "操作成功！");
    },

    // 提示框（失败）
    errorMsg: function (msg) {
        alert(msg || "操作失败！");
    },

    // 确认框
    confirmMsg: function (msg, callback) {
        if (confirm(msg || "确定要执行此操作吗？")) {
            callback();
        }
    },

    // 分页组件渲染
    renderPagination: function (total, pageNum, pageSize, callback) {
        const totalPages = Math.ceil(total / pageSize);
        let paginationHtml = `
            <nav>
                <ul class="pagination">
                    <li class="page-item ${pageNum === 1 ? 'disabled' : ''}">
                        <a class="page-link" href="javascript:;" data-page="${pageNum - 1}">上一页</a>
                    </li>
        `;

        // 页码渲染（最多显示5个页码）
        let startPage = Math.max(1, pageNum - 2);
        let endPage = Math.min(totalPages, pageNum + 2);
        if (endPage - startPage < 4) {
            if (startPage === 1) endPage = Math.min(5, totalPages);
            if (endPage === totalPages) startPage = Math.max(1, totalPages - 4);
        }

        for (let i = startPage; i <= endPage; i++) {
            paginationHtml += `
                <li class="page-item ${i === pageNum ? 'active' : ''}">
                    <a class="page-link" href="javascript:;" data-page="${i}">${i}</a>
                </li>
            `;
        }

        paginationHtml += `
                    <li class="page-item ${pageNum === totalPages ? 'disabled' : ''}">
                        <a class="page-link" href="javascript:;" data-page="${pageNum + 1}">下一页</a>
                    </li>
                </ul>
            </nav>
        `;

        document.getElementById("pagination-container").innerHTML = paginationHtml;

        // 页码点击事件
        document.querySelectorAll(".page-link").forEach(link => {
            link.addEventListener("click", function () {
                const page = parseInt(this.getAttribute("data-page"));
                if (page >= 1 && page <= totalPages) {
                    callback(page);
                }
            });
        });
    }
};

// 加载关联数据（下拉选择用）
const SelectData = {
    // 加载商品分类列表（用于商品、优惠券模板等）
    loadCategories: async function (selectId) {
        try {
            const res = await axios.get("/api/categories/all");
            const categories = res.data;
            const select = document.getElementById(selectId);
            select.innerHTML = '<option value="">请选择分类</option>';
            categories.forEach(cat => {
                select.innerHTML += `<option value="${cat.categoryId}">${cat.categoryName}</option>`;
            });
        } catch (err) {
            Common.errorMsg("加载分类失败：" + err.message);
        }
    },

    // 加载用户列表（用于用户优惠券、订单等）
    loadUsers: async function (selectId) {
        try {
            const res = await axios.get("/api/users/all");
            const users = res.data;
            const select = document.getElementById(selectId);
            select.innerHTML = '<option value="">请选择用户</option>';
            users.forEach(user => {
                select.innerHTML += `<option value="${user.userId}">${user.username}（${user.phone}）</option>`;
            });
        } catch (err) {
            Common.errorMsg("加载用户失败：" + err.message);
        }
    },

    // 加载优惠券模板列表（用于用户优惠券、发放任务等）
    loadCouponTemplates: async function (selectId) {
        try {
            const res = await axios.get("/api/coupon-templates/all");
            const templates = res.data;
            const select = document.getElementById(selectId);
            select.innerHTML = '<option value="">请选择优惠券模板</option>';
            templates.forEach(tpl => {
                select.innerHTML += `<option value="${tpl.id}">${tpl.name}（${tpl.type === 0 ? '立减券' : tpl.type === 1 ? '满减券' : '折扣券'}）</option>`;
            });
        } catch (err) {
            Common.errorMsg("加载优惠券模板失败：" + err.message);
        }
    },

    // 加载城市列表（用于用户注册）
    loadCities: async function (selectId) {
        try {
            const res = await axios.get("/api/cities/all");
            const cities = res.data;
            const select = document.getElementById(selectId);
            select.innerHTML = '<option value="">请选择城市</option>';
            cities.forEach(city => {
                select.innerHTML += `<option value="${city.cityId}">${city.province} - ${city.cityName}</option>`;
            });
        } catch (err) {
            Common.errorMsg("加载城市失败：" + err.message);
        }
    }
};